package com.danton.user.service;

import java.util.List;

import com.danton.model.BsAdminRoleModel;
import com.danton.model.BsRoleModel;
import com.danton.model.BsRolePermissionModel;
import com.jfinal.plugin.activerecord.Page;

/**
 * 角色业务接口
 * 
 * @author sunyuxing
 *
 */
public interface RoleService {
	/**
	 * 通过roleid获取角色
	 * 
	 * @param role_id
	 *            角色id，
	 * @return
	 */
	public BsRoleModel getRoleById(int role_id);
	/**
	 * 冻结/解冻
	 * 
	 * @param role_id
	 *            角色id，
	 * @return
	 */
	public boolean editRoleStatus(BsRoleModel rm);
	/**
	 * 判断角色是否冻结
	 * 
	 * @param role_id
	 *            角色id，
	 * @return
	 */
	public boolean roleStatusCheck(int role_id);
	/**
	 * 查询所有角色
	 * @return list
	 */
	public List<BsRoleModel> listAllRoles();
	/**
	 * 查询已关联角色
	 * @param user_id
	 * @return list
	 */
	public List<BsRoleModel> listUserRoles(int user_id);
	/**
	 * 通过用户字符串拼接id删除和用户id相关的用户角色关联
	 * @param user_ids
	 * @return 
	 */
	public void deleteRoleAdminByUserId(String user_ids);
	
	/**
	 * 判断唯一性
	 * @param role_id,role_name
	 * @return
	 */
	public boolean findByIdAndName(String role_name,String role_id);
	/**
	 * 角色关联用户
	 * 
	 * @param list对象集合
	 *            
	 * @return
	 */
	public boolean relateUsers(List<BsAdminRoleModel> rulist);
	/**
	 * 删除角色关联权限
	 * 
	 * @param role_id
	 *            角色id，
	 * @return
	 */
	public boolean deletePermissions(int role_id);
	/**
	 * 角色关联权限
	 * 
	 * @param role_id
	 *            角色id，
	 * @return
	 */
	public boolean relatePermissions(List<BsRolePermissionModel> rplist);

	/**
	 * 通过name查询id
	 * 
	 * @param name
	 * @return id
	 */
	public String findId(String role_name);

	/**
	 * 角色列表
	 * 
	 * @param pageNumber
	 * @param pageSize
	 * @return
	 */
	public Page<BsRoleModel> list(int pageNumber, int pageSize);

	/**
	 * 新增角色
	 * 
	 * @param RoleModel
	 * @return
	 */
	public boolean add(BsRoleModel roleModel);

	/**
	 * 编辑角色
	 * 
	 * @param roleModel
	 * @return
	 */
	public boolean edit(BsRoleModel roleModel);

	/**
	 * 搜索角色
	 * 
	 * @param pageNumber
	 * @param pageSize
	 * @param kw
	 * @return
	 */
	public Page<BsRoleModel> searchRole(int pageNumber, int pageSize, String kw);
}
